/**
 * 手写实现一个new创建对象的全过程
 */

 // 创建构造函数
 function Person(name,age){
    this.name = name;
    this.age = age;
}
  
Person.prototype.say = function () {
    console.log('说话');
}
  // 定义自己实现的类似new方法，
  function create(fn,...args){
      let obj = {};
      obj.__proto__ = fn.prototype
        fn.call(obj,...args);
        return obj;
  }
  // 使用自己定义的方法创建对象，第一参数是构造函数，相当于模板。从第二个参数起，为对象的属性值。
let obj = create(Person, '张三', 18);
    obj.say()
    console.log(obj)  // {name: "张三", age: 18}
